#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/un.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<arpa/inet.h>
int main(void)
{

    int cfd,len;
    struct sockaddr_un serv_addr,clit_addr;
    char buf[4096];

    cfd=socket(AF_UNIX,SOCK_STREAM,0);
    memset(&clit_addr,0,sizeof(clit_addr));
    clit_addr.sun_family=AF_UNIX;
    strcpy(clit_addr.sun_path,"clit.socket");
    len=offsetof(struct sockaddr_un,sun_path)+strlen("clit.socket");

    ulink("clit.socket");
    bind(cfd,(struct sockaddr*)&clit_addr,len);//客户端在本地domain，需要进行bind绑定

    memset(&serv_addr,0,sizeof(serv_addr));
    serv_addr.sun_family=AF_UNIX;
    strcpy(serv_addr.sun_path,"serv.socket");

    len=offsetof(serv_addr,sun_family)+strlen("serv.socket");
    connect(cfd,(struct sockaddr*)&serv_addr,len);
    
    int count;
    while(fgets(buf,sizeof(buf),stdin)!=0)//从标准输入中stdin中读到buf中
    {
        //client 目的将数据发送给对端（服务器）
        write(cfd,buf,sizeof(buf));

        //server 端会将数据进行处理后，通过cfd发送给对端（客户端）
      count=  read(cfd,buf,sizeof(buf));//client通过cfd重新读数据

      write(STDOUT_FILENO,buf,count);

    }

    close(cfd);


}
